Data storage servers (“storage servers”) can store data redundantly, e.g., across multiple data storage devices. Storage servers may employ various forms of data storage devices, e.g., hard disk drives, solid state drives, tape devices, etc. The data storage devices are typically implemented as one or more storage “volumes” that comprise a cluster of data storage devices, in which the volumes define an overall logical arrangement of storage space. For example, a storage server can serve a large number (e.g., 150 or more) of discrete volumes. Each volume is generally associated with its own file system (e.g., a write anywhere file system).
To improve performance, storage servers can temporarily store various data storage commands (“storage operations” or simply “operations”) they receive from client computing devices in a nonvolatile random access memory (NVRAM), e.g., in a log file stored in the NVRAM. The NVRAM log file can accumulate storage operations until the NVRAM is almost fully filled. When the NVRAM is almost fully filled, data is transferred from the storage server system memory to underlying data storage volumes, and the NVRAM is cleared of the transferred data upon successful transfer. However, prior technologies fail to accurately determine when the NVRAM log file is actually full because they fail to consider the additional memory space required to perform certain data storage commands.